package a3_p04_ak_fh;

import java.util.ArrayList;
import java.util.List;

import org.jgrapht.WeightedGraph;
import org.jgrapht.graph.DefaultWeightedEdge;

import a2_p04_ak_fh.AttVertex;
import a3_p04_ak_fh.GraphVis;
import a2_p04_ak_fh.IOHelper;
import a3_p04_ak_fh.Kruskal.*;
import java.text.*;

public class Aufgabe3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		IOHelper IOHelper = new IOHelper();
		double vergleich = 0.0;
		DecimalFormat f = new DecimalFormat("#0.00");
		
		
		System.out.println("###### ---- GRAPH 4 ----######");		
		WeightedGraph<AttVertex, DefaultWeightedEdge> graph1 = IOHelper.readGraphFile("graph4.gka");
		System.out.println("###### ---- PriQue ----######");
		Kruskal mingraph1 = Kruskal.CalcPriQu(graph1);
//		
//
//		System.out.println("Time[msec] "+mingraph1.getTimeInMillis());
//		
		System.out.println("###### ---- FIB ----######");
		Kruskal mingraph2 = Kruskal.CalcFibHeap(graph1);
		
//		
//		
//		if(mingraph1.getTimeInMillis()>mingraph2.getTimeInMillis()){
//			vergleich = (mingraph1.getTimeInMillis()-mingraph2.getTimeInMillis());
//			System.out.println("Vergleich FIB ist "+vergleich+" scheller als PriQue");
//		}else{
//			vergleich = (mingraph2.getTimeInMillis()-mingraph1.getTimeInMillis());
//			System.out.println("Vergleich PriQue ist "+vergleich+" scheller als FIB");
//		}
//		GraphVis.startvis(graph1,1, mingraph1.getGraph());

		System.out.println("###### ---- PriQuePRIM ----######");
		Prim.CalcPriQu(graph1);
		System.out.println("###### ---- FibPRIM ----######");
//		WeightedGraph<AttVertex, DefaultWeightedEdge> graph3 = IOHelper.readGraphFile("graph5.gka");
		Prim.CalcFibHeap(graph1);
//		
		System.out.println("####################################");
		System.out.println("###### ---- GRAPH 5 ----######");
		WeightedGraph<AttVertex, DefaultWeightedEdge> graph2 = IOHelper.readGraphFile("graph5.gka");
		
		System.out.println("###### ---- PriQue ----######");
		Kruskal mingraph3 = Kruskal.CalcPriQu(graph2);	
		
		
		System.out.println("###### ---- FIB ----######");
		Kruskal mingraph4 = Kruskal.CalcFibHeap(graph2);	
//		
//		if(mingraph3.getTimeInMillis()>mingraph4.getTimeInMillis()){
//			System.out.println("Vergleich FIB ist "+(mingraph3.getTimeInMillis()-mingraph4.getTimeInMillis())+" scheller als PriQue");
//		}else{
//			System.out.println("Vergleich PriQue ist "+(mingraph4.getTimeInMillis()-mingraph3.getTimeInMillis())+" scheller als FIB");
//		}	
//		GraphVis.startvis(graph2,1, mingraph3.getGraph());
		System.out.println("###### ---- PriQuePRIM ----######");
		Prim.CalcPriQu(graph2);
		System.out.println("###### ---- FibPRIM ----######");
//		WeightedGraph<AttVertex, DefaultWeightedEdge> graph3 = IOHelper.readGraphFile("graph5.gka");
		Prim.CalcFibHeap(graph2);
//		GraphVis.startvis(graph2,1, mingraphPrim2.getGraph());
//	
		System.out.println("####################################");
		System.out.println("###### ---- BIGGRAPH ----######");
		//WeightedGraph<AttVertex, DefaultWeightedEdge> biggraph = RandomGraph.getRandomGraph(20,5);		
		WeightedGraph<AttVertex, DefaultWeightedEdge> biggraph = IOHelper.readGraphFile("BIG.gka");
//		
		System.out.println("###### ---- FIB ----######");
		Kruskal mingib2 = Kruskal.CalcFibHeap(biggraph);	
		System.out.println("###### ---- FibPRIM ----######");
		Prim g2 = Prim.CalcFibHeap(biggraph);
		System.out.println("###### ---- PriQue ----######");
		Kruskal g245 =Kruskal.CalcPriQu(biggraph);	
		System.out.println("###### ---- PriQuePRIM ----######");
		Prim g25 =Prim.CalcPriQu(biggraph);
		GraphVis.startvis(biggraph,1, mingib2.getGraph());
		GraphVis.startvis(biggraph,1, g2.getGraph());
		
//		if(mingib1.getTimeInMillis()>mingib2.getTimeInMillis()){
//			System.out.println("Vergleich FIB ist "+(mingib1.getTimeInMillis()-mingib2.getTimeInMillis())+" Milisekunden scheller als PriQue");
//		}else{
//			System.out.println("Vergleich PriQue ist "+(mingib2.getTimeInMillis()-mingib1.getTimeInMillis())+" Milisekunden scheller als FIB");
//		}
//		GraphVis.startvis(biggraph,1, mingib2.getGraph());
//		System.out.println("####################################");
	}

}
